package com.xgj.config;

import com.xgj.controller.MyJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class QuartzConfig {
    @Bean
    public JobDetail myJobDetail() {
        // 创建一个新的JobDetail实例，指定要执行的任务类为MyJob
        // withIdentity方法用于给这个JobDetail设置一个唯一的标识 "myJob"
        // storeDurably方法表示即使没有与之关联的触发器，也会保留这个JobDetail
        return JobBuilder.newJob(MyJob.class)
                .withIdentity("myJob")
                .storeDurably()
                .build();
    }

    //Spring Boot Admin 的 /quartz 端点默认只会显示 NORMAL（正常）或 PAUSED（暂停）状态的 Trigger，不会显示已完成的 Trigger。
//    @Bean
//    public Trigger myJobTrigger() {
//        // 创建一个简单的调度器构建器
//        // 配置调度器只执行一次任务，这里的repeatCount(0)表示不重复，即只执行一次
//        // withIntervalInSeconds(0) 表示任务立即执行，没有延迟
//        SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
//                .withIntervalInSeconds(0) // 任务立即执行，无延迟
//                .withRepeatCount(0); // 任务只执行一次，不重复
//
//        // 创建一个新的触发器实例
//        // forJob方法指定该触发器关联的JobDetail
//        // withIdentity方法为触发器设置一个唯一的标识 "myJobTrigger"
//        // withSchedule方法将前面配置好的调度器应用到这个触发器上
//        return TriggerBuilder.newTrigger()
//                .forJob(myJobDetail())
//                .withIdentity("myJobTrigger")
//                .withSchedule(scheduleBuilder)
//                .build();
//    }

    //改成用cron表达式
    @Bean
    public Trigger myJobTrigger() {
        return TriggerBuilder.newTrigger()
                .forJob(myJobDetail())
                .withIdentity("myJobTrigger")
                .withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?")) // 每10秒触发
                .build();
    }
}
